/*
 * Copyright 2020 The Knative Authors
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * 	http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package event

// StepsStore contains methods that register step event type
type StepsStore interface {
	RegisterStep(step *Step)
	Count() int
}

// FinishedStore registers a finished event type
type FinishedStore interface {
	RegisterFinished(finished *Finished)
	TotalRequests() int
	State() State
	DuplicatedThrown() []string
	MissingThrown() []string
	UnexpectedThrown() []string
	UnavailableThrown() []string
}

// Typed says a type of an event
type Typed interface {
	Type() string
}
